package com.ruoyi.system.service;

import java.util.List;

import com.ruoyi.system.domain.UmsCustomer;
import com.ruoyi.system.domain.params.CustomerSaveParams;
import com.ruoyi.system.domain.params.SaveOrderParams;
import com.ruoyi.system.domain.vo.UmsCustomerInfoVo;
import com.ruoyi.system.domain.vo.UmsCustomerListVo;

/**
 * 客户Service接口
 *
 * @author ruoyi
 * @date 2023-02-26
 */
public interface IUmsCustomerService {
    /**
     * 查询客户
     *
     * @param userId 客户主键
     * @return 客户
     */
    public UmsCustomer selectUmsCustomerByUserId(Integer userId);

    /**
     * 查询客户列表
     *
     * @param umsCustomer 客户
     * @return 客户集合
     */
    public List<UmsCustomerListVo> selectUmsCustomerList(UmsCustomer umsCustomer);

    /**
     * 新增客户
     *
     * @param umsCustomer 客户
     * @return 结果
     */
    public int insertUmsCustomer(UmsCustomer umsCustomer);

    /**
     * 生成用户编码
     * @param username
     * @return
     */
    String createUserCode(String username);

    /**
     * 修改客户
     *
     * @param umsCustomer 客户
     * @return 结果
     */
    public int updateUmsCustomer(CustomerSaveParams umsCustomer);

    /**
     * 批量删除客户
     *
     * @param userIds 需要删除的客户主键集合
     * @return 结果
     */
    public int deleteUmsCustomerByUserIds(Long[] userIds);

    /**
     * 删除客户信息
     *
     * @param userId 客户主键
     * @return 结果
     */
    public int deleteUmsCustomerByUserId(Long userId);

    /**
     * 客户端接口
     * 根据客户姓名获取客户账号详情，如果没这个账号就注册一个
     *
     * @param name 客户姓名
     * @return
     */
    public UmsCustomerInfoVo clientGetCustomerInfoByName(String name);

    /**
     * 创建订单时返回合法客户
     * @return
     */
    UmsCustomer createOrderCustomerInfo(SaveOrderParams params);
}
